SQL UNION 연산자
IT 위키
SQL의 UNION 연산자는 두 개 이상의 SELECT 문 결과를 결합하여 하나의 결과 집합으로 반환할 때 사용된다. 이때 각 SELECT 문은 같은 수의 컬럼을 반환해야 하며, 각 컬럼의 데이터 타입이 호환되어야 한다.
1 기본 문법[편집 | 원본 편집]
SELECT 컬럼1, 컬럼2, ...
FROM 테이블1
[WHERE 조건]
UNION
SELECT 컬럼1, 컬럼2, ...
FROM 테이블2
[WHERE 조건];
- 기본적으로 중복된 행은 제거됨 (집합 연산)
- 중복 포함을 허용하려면 UNION 대신 UNION ALL 사용
2 UNION vs UNION ALL[편집 | 원본 편집]
- UNION
- 중복된 행을 제거하여 결과 반환
- 내부적으로 정렬 및 비교 연산이 수행되어 성능에 영향
- UNION ALL
- 모든 결과 행을 포함 (중복 허용)
- 성능이 더 우수하고 빠름
3 예시 테이블[편집 | 원본 편집]
customers_2023:
id | name |
---|---|
1 | Alice |
2 | Bob |
customers_2024:
id | name |
---|---|
2 | Bob |
3 | Carol |
4 예제 1: UNION 사용 (중복 제거)[편집 | 원본 편집]
SELECT name FROM customers_2023
UNION
SELECT name FROM customers_2024;
→ 결과:
name |
---|
Alice |
Bob |
Carol |
5 예제 2: UNION ALL 사용 (중복 허용)[편집 | 원본 편집]
SELECT name FROM customers_2023
UNION ALL
SELECT name FROM customers_2024;
→ 결과:
name |
---|
Alice |
Bob |
Bob |
Carol |
6 주의 사항[편집 | 원본 편집]
- SELECT 문의 컬럼 수가 동일해야 하며, 데이터 타입이 호환되어야 함
- 컬럼 이름은 첫 번째 SELECT 문을 기준으로 정해짐
- ORDER BY는 전체 결과에 대해 마지막 SELECT 뒤에만 사용 가능
7 예제 3: ORDER BY 사용[편집 | 원본 편집]
SELECT name FROM customers_2023
UNION
SELECT name FROM customers_2024
ORDER BY name;
8 같이 보기[편집 | 원본 편집]
9 참고 문헌[편집 | 원본 편집]
- Melton, J., & Simon, A. R. (2002). SQL: 1999 – Understanding Relational Language Components. Morgan Kaufmann.
- MySQL Reference Manual
- PostgreSQL Documentation
- Oracle SQL Language Reference